package com.soso.controller;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.soso.dao.ModulesDao;
import com.soso.dao.Modulesroles;
import com.soso.dao.RolesDao;
import com.soso.entity.Modules;
import com.soso.entity.Rolemodules;
import com.soso.entity.Roles;

@Controller
public class ModulesController {

	@Autowired
	private ModulesDao modulesdao;
	
	@Autowired
	private Modulesroles modulesroles;
	@Autowired
	private RolesDao rolesdao;
	
	@RequestMapping("/getmodu")
	@ResponseBody
	@CrossOrigin(origins = "*")
	public List<Modules> getmodu(String UserId){
		
	List<Modules> mlist=modulesdao.getmodall(UserId);
	
	//父节点
	List<Modules> flist=new ArrayList<Modules>();
	
	//子节点
	List<Modules> zlist=new ArrayList<Modules>();

		
		  for(int i=0;i<mlist.size();i++) {
		  if(mlist.get(i).getParentId()==null ||mlist.get(i).getParentId()==0) {
			  flist.add(mlist.get(i));
		  }else {
			  zlist.add(mlist.get(i));
		  }
		  }
		
	for(int i=0;i<flist.size();i++) {
		//同父的子
		List<Modules> clist=new ArrayList<Modules>();
		int a=flist.get(i).getId();
		for(int j=0;j<zlist.size();j++) {
			int b=zlist.get(j).getParentId();
			if(a==b) {
				clist.add(zlist.get(j));
			}
		}
		flist.get(i).setChildren(clist);
		}
	
		return flist;
		
	}
	
	
	//回显
	  @RequestMapping("/getmoduroles")	  
	  @ResponseBody	  
	  @CrossOrigin(origins = "*") 
	  public List<Modules> getmoduroles(String RoleId){
	
System.out.println(RoleId);
	  List<Modules> mlist=modulesdao.findAll();
	
	  List<Modules> mmlist=modulesdao.getmodalls(RoleId);
	  
	  //父节点
		List<Modules> fflist=new ArrayList<Modules>();
		//部分子节点
		List<Modules> zzlist=new ArrayList<Modules>();
		
		  for(int i=0;i<mmlist.size();i++) {
			  if(mmlist.get(i).getParentId()==null ||mmlist.get(i).getParentId()==0) {
				  fflist.add(mmlist.get(i));
			  }else {
				  zzlist.add(mmlist.get(i));
			  }
			  }
		
		
	  //父节点
		List<Modules> flist=new ArrayList<Modules>();
		//全部子节点
		List<Modules> zlist=new ArrayList<Modules>();

	
			 
		
		for(int i=0;i<mlist.size();i++) {
			  if(mlist.get(i).getParentId()==null ||mlist.get(i).getParentId()==0) {
				  flist.add(mlist.get(i));
			  }else {
				  zlist.add(mlist.get(i));
			  }
			  }

		for(int i=0;i<zzlist.size();i++) {
			for(int j=0;j<zlist.size();j++) {
				if(zlist.get(j).getTitle().equals(zzlist.get(i).getTitle())) {
					zlist.get(j).setChecked(true);

				}	
			}	
		} 
	
		for(int i=0;i<flist.size();i++) {
			//同父的子
			List<Modules> clist=new ArrayList<Modules>();
			int a=flist.get(i).getId();
		
			for(int j=0;j<zlist.size();j++) {
				int b=zlist.get(j).getParentId();
				
				if(a==b) {
					clist.add(zlist.get(j));
					
				}
			}
			flist.get(i).setChildren(clist);
			}

			return flist;
	
	 
	  
	  }
	 
	  
	  //添加修改
	  @RequestMapping("/addmoduroles")	  
	  @ResponseBody	  
	  @CrossOrigin(origins = "*") 
	  public Map<String, Object> addmoduroles(String arr,String RoleId){
		
			String arrr=arr.substring(1, arr.length()-1);
			//拿到编号
			  List<String> s=new ArrayList<String>();
			 String[] array = arrr.split(",");
		        for (String a : array) {
		            s.add(a);
		        }
		      //拿到编号 
		        List<String> ss=new ArrayList<String>();
		        
		        List<Modules> mlist=modulesdao.findAll();
		    	
		  	  List<Modules> mmlist=modulesdao.getmodalls(RoleId);
		  	
  
		    	for(int i=0;i<mmlist.size();i++) {
					for(int j=0;j<mlist.size();j++) {
						if(mlist.get(j).getTitle().equals(mmlist.get(i).getTitle())) {
							ss.add((mlist.get(j).getId()).toString());
						}	
					}	
				}
		    	
		    	
		  //添加
		    	for(int i=0;i<s.size();i++) {
		    		int ModuleId=Integer.parseInt(s.get(i));
		    		System.out.println(ModuleId);
		    		List<Rolemodules> vv=modulesroles.getmodalls(RoleId,ModuleId);
		    	if(vv.size()==0) {
		    	//如果数据库没有 就添加
		    		Integer Id=ModuleId;
		    		System.out.println(Id);
		    		Modules m=modulesdao.Modulesgetallss(Id);
		    		
		    		 Roles r=rolesdao.getallroles(RoleId);
		    		 Rolemodules ro=new Rolemodules(1, r, m);
		    		modulesroles.saveAndFlush(ro);
		    		
		    	}

		    	}
	    	
		    	//删除就是ss有 s没有
	         System.out.println(s);
		        System.out.println(ss);
		        List<String> c = new ArrayList<String>();
		        c.addAll(ss);
				c.removeAll(s);
				if(c.size()>0) {
				for(int i=0;i<c.size();i++) {
					String ModuleId=c.get(i);
					Integer e=modulesroles.rolemodulesdels(ModuleId, RoleId);
					System.out.println(e);
				}
					
				}
				Map<String, Object> map=new HashMap<String, Object>();
				map.put("msg", "修改成功");
		  return map;

	  }
	  
	
}
